/**
 * Copyright (c) 2002-2011 旭鸣信息
 * All rights reserved. 
 * File：AuthenticationFace.java
 * History:
 *       2012-1-13: Initially created, tangkf.
 */
package com.xteam.purview.service;

import java.util.List;
import java.util.Map;

import com.xteam.purview.entities.PurviewFunNode;
import com.xteam.purview.entities.PurviewType;

/**
 * 认证接口规范定义
 * 用于定义权限认证，鉴权的相关规范
 * @author tangkf  ---2012-1-13
 */
public interface IAuthenticationFace {

	/**
	 * 获取某用户对某功能拥有的权限类型表,返回值是一个list,其中保存了权限类型对象
	 * @author tangkf
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @return
	 */
	public List<PurviewType> getPurviewList(String userId, String funNodeId);

	/**
	 * 获取指定用户具有权限的所有功能结点
	 * 包含用户直接具有权限的功能 + 用户角色觉有权限的功能
	 * @author tangkf
	 * @param userId
	 * @return
	 */
	public Map<String,PurviewFunNode> getFunNodeByUser(String userId);

	/**
	 * <p>
	 * 用户对某个功能是否具有权限
	 * 不判定具体的权限类型
	 * </p>
	 * @author tangkf  ---2012-1-25
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @return
	 */
	public boolean hasPurview(String userId, String funNodeId);

	/**
	 * <p>
	 * 判定用户对某个功能是否具有指定的权限
	 * 判定具体的权限类型
	 * </p>
	 * @author tangkf  ---2012-1-25
	 * @param userId 用户ID
	 * @param funNodeId 功能ID
	 * @param typeId 类型ID
	 * @return
	 */
	public boolean hasPurview(String userId, String funNodeId, String typeId);

	/**
	 * <p>
	 * 判断指定用户是否具有登陆权限
	 * </p>
	 * @author tangkf
	 * @param userId 用户ID
	 * @return
	 */
	public boolean hasLoginPurview(String userId);

}
